package com.onlygx.dva.web.base.service;

import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import com.onlygx.dva.common.properties.CommonSnowflakeProperties;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  ID生成服务 - 雪花算法
 * </p>
 *
 * @author 高祥
 * @since 2023-07-28
 */
@Service
@RequiredArgsConstructor
public class SnowflakeService {

    final CommonSnowflakeProperties commonSnowflakeProperties;;

    /**
     * 获取ID
     * 高祥 2023年7月28日16:17:19
     */
    public Long nextId() {
        Snowflake snowflake = IdUtil.getSnowflake(
                commonSnowflakeProperties.getWorkerId()
                , commonSnowflakeProperties.getDatacenterId());
        return snowflake.nextId();
    }

    /**
     * 获取字符串类型的ID
     * 高祥 2023年7月28日16:17:19
     */
    public String nextIdStr() {
        return String.valueOf(nextId());
    }
}
